-----------------------------------Program 1------------------------
MODULE ic1;
VAR x,y:INTEGER;
BEGIN
x:=0;
x:=(x+1)*(x+2)+23;
END ic1.
-------------------------
x := 0;
#LABEL1: #TEMP0 := x + 1;
#TEMP1 := x + 2;
#TEMP2 := #TEMP0 * #TEMP1;
#TEMP3 := #TEMP2 + 23;
x := #TEMP3;
#LABEL0: #LABEL2: 

------------------------------------Program 2-----------------
MODULE ic0;
VAR x,y:INTEGER;
BEGIN
IF (x < 0)
THEN 
y := 3
ELSE x:=4
END
END ic0.
-------------------------
x := 0;
#LABEL1: #TEMP0 := x + 1;
#TEMP1 := x + 2;
#TEMP2 := #TEMP0 * #TEMP1;
#TEMP3 := #TEMP2 + 23;
x := #TEMP3;
#LABEL0: #LABEL2: 


------------------------------------Program 3--------------------
MODULE ic3;
VAR x,y:INTEGER;
BEGIN
IF (((x < 0) OR (y > 0) ))
THEN 
  IF (y > 1)
  THEN y := 2
  END
ELSE x:=4
END
END ic3.
-------------------------------
IF x < 0 JUMP #LABEL4;
JUMP #LABEL0;
#LABEL0: IF y > 0 JUMP #LABEL4;
JUMP #LABEL5;
#LABEL4: IF y > 1 JUMP #LABEL1;
JUMP #LABEL2;
#LABEL1: y := 2;
JUMP #LABEL7;
#LABEL2: #LABEL3: JUMP #LABEL7;
#LABEL5: #LABEL6: x := 4;
#LABEL7: 

----------------------------------------Program 4---------------------------
MODULE ic4;
VAR x,y:INTEGER;
z: ARRAY 5 OF INTEGER;
BEGIN
IF (x>0)
THEN x:=0
ELSIF (y>0)
THEN y:=0
ELSIF (y>2)
THEN x := y+111 ;
     y := 2
ELSE
x := y+1
END
END ic4.
---------------------------------
IF x > 0 JUMP #LABEL5;
JUMP #LABEL6;
#LABEL5: x := 0;
JUMP #LABEL8;
#LABEL6: IF y > 0 JUMP #LABEL3;
JUMP #LABEL4;
#LABEL3: y := 0;
JUMP #LABEL8;
#LABEL4: IF y > 2 JUMP #LABEL1;
JUMP #LABEL2;
#LABEL1: #TEMP0 := y + 111;
x := #TEMP0;
#LABEL0: y := 2;
JUMP #LABEL8;
#LABEL2: #LABEL7: #TEMP1 := y + 1;
x := #TEMP1;
#LABEL8: 

----------------------------------------Program 5---------------------------
MODULE ic6;
VAR x,y:INTEGER;

BEGIN
WHILE( (x<0) OR (x>2))
DO
    x:=2;
    y := x*7;
END
END ic6.
---------------------------------
#LABEL3: IF x < 0 JUMP #LABEL4;
JUMP #LABEL0;
#LABEL0: IF x > 2 JUMP #LABEL4;
JUMP #LABEL5;
#LABEL4: x := 2;
#LABEL2: #TEMP1 := x * 7;
y := #TEMP1;
#LABEL1: JUMP #LABEL3;
#LABEL5: 

----------------------------------------Program 6-----------------------
MODULE ic7;
VAR x:INTEGER;
BEGIN
REPEAT
    x:=x+2
UNTIL x < 100
END ic7.
-------------------
#LABEL0: #TEMP0 := x + 2;
x := #TEMP0;
#LABEL1: IF x < 100 JUMP #LABEL2;
JUMP #LABEL0;
#LABEL2: 

----------------------------------------Program 7---------------------
MODULE arr1;
IMPORT Out;
VAR
    x: ARRAY 5,10 OF INTEGER;
    y: INTEGER;
    m: INTEGER;
    z: ARRAY 10 OF INTEGER;
BEGIN
    y := x[3,5];
END arr1.
----------------------------------
#LABEL0: #TEMP0 := x + 2;
x := #TEMP0;
#LABEL1: IF x < 100 JUMP #LABEL2;
JUMP #LABEL0;
#LABEL2: 

----------------------------------------Program 8---------------------
MODULE arr0;
IMPORT Out;
VAR
    x: ARRAY 5 OF ARRAY 4 OF INTEGER;
    y: INTEGER;
    m: INTEGER;
    z: ARRAY 10 OF INTEGER;
BEGIN
    y := x[z[2]][3];
END arr0.
-------------------------
#TEMP0 := z[ 2 ];
#TEMP1 := x[ #TEMP0 ];
#TEMP2 := #TEMP1[ 3 ];
y := #TEMP2;
#LABEL0: #LABEL1:

----------------------------------------Program 9---------------------
MODULE arr3;
IMPORT Out;
VAR
    x: ARRAY 10,20,30,40 OF INTEGER;
    y: INTEGER;
    m: INTEGER;
BEGIN
    m := 2;
    y := x[m+3*7,m-5,4,1];
END arr3.
---------------------------------
m := 2;
#LABEL1: #TEMP0 := m + 21;
#TEMP1 := m - 5;
#TEMP3 := #TEMP0;
#TEMP4 := #TEMP3 * 10;
#TEMP5 := #TEMP4 + #TEMP1;
#TEMP6 := #TEMP5 * 20;
#TEMP7 := #TEMP6 + 4;
#TEMP8 := #TEMP7 * 30;
#TEMP9 := #TEMP8 + 1;
#TEMP2 := x[ #TEMP9 ];
y := #TEMP2;
#LABEL0: #LABEL2: 
-----------------------------------------------------------------------
